<!DOCTYPE html>
<html lang="en-US">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <title>git 使用攻略 | 小熊的技术文档</title>
    <meta name="generator" content="VuePress 1.8.2">
    <link rel="icon" href="/fav.ico">
    <link rel="stylesheet" href="/css/katex.min.css">
    <link rel="stylesheet" href="/css/github-markdown.min.css">
    <meta name="description" content="衣带渐宽终不悔，为伊消得人憔悴">
    
    <link rel="preload" href="/assets/css/0.styles.e6449353.css" as="style"><link rel="preload" href="/assets/js/app.9e067b79.js" as="script"><link rel="preload" href="/assets/js/2.983eb755.js" as="script"><link rel="preload" href="/assets/js/34.381de37e.js" as="script"><link rel="prefetch" href="/assets/js/10.79548333.js"><link rel="prefetch" href="/assets/js/11.31600f80.js"><link rel="prefetch" href="/assets/js/12.62bd3528.js"><link rel="prefetch" href="/assets/js/13.de8b1ace.js"><link rel="prefetch" href="/assets/js/14.f5db1e75.js"><link rel="prefetch" href="/assets/js/15.bf827d4d.js"><link rel="prefetch" href="/assets/js/16.cc9a1a73.js"><link rel="prefetch" href="/assets/js/17.2cfaefeb.js"><link rel="prefetch" href="/assets/js/18.3af7782b.js"><link rel="prefetch" href="/assets/js/19.639f7e7b.js"><link rel="prefetch" href="/assets/js/20.dc862f59.js"><link rel="prefetch" href="/assets/js/21.916e1685.js"><link rel="prefetch" href="/assets/js/22.d7a955f4.js"><link rel="prefetch" href="/assets/js/23.078391ef.js"><link rel="prefetch" href="/assets/js/24.bb460a5a.js"><link rel="prefetch" href="/assets/js/25.d69f2326.js"><link rel="prefetch" href="/assets/js/26.6da7ea48.js"><link rel="prefetch" href="/assets/js/27.82e23d91.js"><link rel="prefetch" href="/assets/js/28.9073bbec.js"><link rel="prefetch" href="/assets/js/29.639259a4.js"><link rel="prefetch" href="/assets/js/3.e594e5b2.js"><link rel="prefetch" href="/assets/js/30.b49c622d.js"><link rel="prefetch" href="/assets/js/31.92f6c8b3.js"><link rel="prefetch" href="/assets/js/32.42419088.js"><link rel="prefetch" href="/assets/js/33.c82e2ab8.js"><link rel="prefetch" href="/assets/js/35.5e86d478.js"><link rel="prefetch" href="/assets/js/36.31f218ce.js"><link rel="prefetch" href="/assets/js/37.0d287b3f.js"><link rel="prefetch" href="/assets/js/38.1324cf44.js"><link rel="prefetch" href="/assets/js/39.de6bdb51.js"><link rel="prefetch" href="/assets/js/4.440c4dd9.js"><link rel="prefetch" href="/assets/js/40.a22c9c27.js"><link rel="prefetch" href="/assets/js/41.4637d617.js"><link rel="prefetch" href="/assets/js/42.db815e2b.js"><link rel="prefetch" href="/assets/js/43.f0955a92.js"><link rel="prefetch" href="/assets/js/44.7d5faddf.js"><link rel="prefetch" href="/assets/js/45.a88ffc33.js"><link rel="prefetch" href="/assets/js/46.883caa71.js"><link rel="prefetch" href="/assets/js/47.6f2cfd60.js"><link rel="prefetch" href="/assets/js/48.ea25654e.js"><link rel="prefetch" href="/assets/js/49.f38c23a0.js"><link rel="prefetch" href="/assets/js/5.e8844f36.js"><link rel="prefetch" href="/assets/js/50.e03dd8e9.js"><link rel="prefetch" href="/assets/js/51.f6160d52.js"><link rel="prefetch" href="/assets/js/52.4daa8322.js"><link rel="prefetch" href="/assets/js/53.b30992e9.js"><link rel="prefetch" href="/assets/js/54.209f17e1.js"><link rel="prefetch" href="/assets/js/55.4f1dd95b.js"><link rel="prefetch" href="/assets/js/56.147ea3e8.js"><link rel="prefetch" href="/assets/js/57.5823e0e2.js"><link rel="prefetch" href="/assets/js/58.772320f9.js"><link rel="prefetch" href="/assets/js/59.5ab55a80.js"><link rel="prefetch" href="/assets/js/6.54e1cc95.js"><link rel="prefetch" href="/assets/js/60.b47b75bb.js"><link rel="prefetch" href="/assets/js/61.0cd5a012.js"><link rel="prefetch" href="/assets/js/62.35eb5453.js"><link rel="prefetch" href="/assets/js/63.d31f2118.js"><link rel="prefetch" href="/assets/js/64.03d35d7c.js"><link rel="prefetch" href="/assets/js/65.8bdc633f.js"><link rel="prefetch" href="/assets/js/66.dbbe8867.js"><link rel="prefetch" href="/assets/js/67.228613b5.js"><link rel="prefetch" href="/assets/js/68.d10a2687.js"><link rel="prefetch" href="/assets/js/69.7903847f.js"><link rel="prefetch" href="/assets/js/7.f5ab00eb.js"><link rel="prefetch" href="/assets/js/70.11ee4e27.js"><link rel="prefetch" href="/assets/js/8.95b39934.js"><link rel="prefetch" href="/assets/js/9.26cfd48c.js">
    <link rel="stylesheet" href="/assets/css/0.styles.e6449353.css">
  </head>
  <body>
    <div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><!----> <span class="site-name">小熊的技术文档</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/front-end/" class="nav-link">
  🎨前端
</a></div><div class="nav-item"><a href="/back-end/" class="nav-link">
  💻后端
</a></div><div class="nav-item"><a href="/practice/" class="nav-link">
  🚀实战
</a></div><div class="nav-item"><a href="/office/" class="nav-link">
  🏢办公
</a></div><div class="nav-item"><a href="/general/" class="nav-link router-link-active">
  🍓通用
</a></div><div class="nav-item"><a href="/paper/" class="nav-link">
  🐸论文
</a></div><div class="nav-item"><a href="/general/fast.html" class="nav-link">
  ⚡快速笔记
</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="🦉近期重点" class="dropdown-title"><span class="title">🦉近期重点</span> <span class="arrow down"></span></button> <button type="button" aria-label="🦉近期重点" class="mobile-dropdown-title"><span class="title">🦉近期重点</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/back-end/python.html" class="nav-link">
  🐇python常用模块
</a></li><li class="dropdown-item"><!----> <a href="/practice/zrender.html" class="nav-link">
  🌹zrender源码解析
</a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="⭐️资源" class="dropdown-title"><span class="title">⭐️资源</span> <span class="arrow down"></span></button> <button type="button" aria-label="⭐️资源" class="mobile-dropdown-title"><span class="title">⭐️资源</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://www.birdiesearch.com/" target="_blank" rel="noopener noreferrer" class="nav-link external">
  小鸟搜索
  <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li><li class="dropdown-item"><!----> <a href="https://salttiger.com/" target="_blank" rel="noopener noreferrer" class="nav-link external">
  每天一本编程书
  <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li><li class="dropdown-item"><!----> <a href="https://gitee.com/docmirror/dev-sidecar" target="_blank" rel="noopener noreferrer" class="nav-link external">
  开发者边车
  <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li></ul></div></div> <!----></nav></div></header> <div class="sidebar-mask"></div> <aside class="sidebar"><nav class="nav-links"><div class="nav-item"><a href="/front-end/" class="nav-link">
  🎨前端
</a></div><div class="nav-item"><a href="/back-end/" class="nav-link">
  💻后端
</a></div><div class="nav-item"><a href="/practice/" class="nav-link">
  🚀实战
</a></div><div class="nav-item"><a href="/office/" class="nav-link">
  🏢办公
</a></div><div class="nav-item"><a href="/general/" class="nav-link router-link-active">
  🍓通用
</a></div><div class="nav-item"><a href="/paper/" class="nav-link">
  🐸论文
</a></div><div class="nav-item"><a href="/general/fast.html" class="nav-link">
  ⚡快速笔记
</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="🦉近期重点" class="dropdown-title"><span class="title">🦉近期重点</span> <span class="arrow down"></span></button> <button type="button" aria-label="🦉近期重点" class="mobile-dropdown-title"><span class="title">🦉近期重点</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/back-end/python.html" class="nav-link">
  🐇python常用模块
</a></li><li class="dropdown-item"><!----> <a href="/practice/zrender.html" class="nav-link">
  🌹zrender源码解析
</a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="⭐️资源" class="dropdown-title"><span class="title">⭐️资源</span> <span class="arrow down"></span></button> <button type="button" aria-label="⭐️资源" class="mobile-dropdown-title"><span class="title">⭐️资源</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://www.birdiesearch.com/" target="_blank" rel="noopener noreferrer" class="nav-link external">
  小鸟搜索
  <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li><li class="dropdown-item"><!----> <a href="https://salttiger.com/" target="_blank" rel="noopener noreferrer" class="nav-link external">
  每天一本编程书
  <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li><li class="dropdown-item"><!----> <a href="https://gitee.com/docmirror/dev-sidecar" target="_blank" rel="noopener noreferrer" class="nav-link external">
  开发者边车
  <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li></ul></div></div> <!----></nav>  <ul class="sidebar-links"><li><a href="/general/fast.html" class="sidebar-link">快速笔记</a></li><li><a href="/general/git.html" aria-current="page" class="active sidebar-link">git 使用攻略</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/general/git.html#git-命令速查" class="sidebar-link">git 命令速查</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/general/git.html#常用命令" class="sidebar-link">常用命令</a></li><li class="sidebar-sub-header"><a href="/general/git.html#git-创建-ssh-key-进行远程提交" class="sidebar-link">git 创建 ssh key 进行远程提交</a></li><li class="sidebar-sub-header"><a href="/general/git.html#新建代码库" class="sidebar-link">新建代码库</a></li><li class="sidebar-sub-header"><a href="/general/git.html#git-配置" class="sidebar-link">git 配置</a></li><li class="sidebar-sub-header"><a href="/general/git.html#增加-修改-提交文件" class="sidebar-link">增加/修改/提交文件</a></li><li class="sidebar-sub-header"><a href="/general/git.html#分支" class="sidebar-link">分支</a></li><li class="sidebar-sub-header"><a href="/general/git.html#标签" class="sidebar-link">标签</a></li><li class="sidebar-sub-header"><a href="/general/git.html#rebase" class="sidebar-link">rebase</a></li><li class="sidebar-sub-header"><a href="/general/git.html#在提交树上移动" class="sidebar-link">在提交树上移动</a></li><li class="sidebar-sub-header"><a href="/general/git.html#撤销变更" class="sidebar-link">撤销变更</a></li><li class="sidebar-sub-header"><a href="/general/git.html#查看信息" class="sidebar-link">查看信息</a></li><li class="sidebar-sub-header"><a href="/general/git.html#远程操作" class="sidebar-link">远程操作</a></li><li class="sidebar-sub-header"><a href="/general/git.html#撤销" class="sidebar-link">撤销</a></li></ul></li><li class="sidebar-sub-header"><a href="/general/git.html#pandoc-配合-git-实现文档版本化管理" class="sidebar-link">pandoc 配合 git 实现文档版本化管理</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/general/git.html#pandoc-基本命令" class="sidebar-link">pandoc 基本命令</a></li><li class="sidebar-sub-header"><a href="/general/git.html#将-md-文件转换为公文格式-word" class="sidebar-link">将 md 文件转换为公文格式 word</a></li></ul></li></ul></li><li><a href="/general/markdown.html" class="sidebar-link">Markdown基本语法</a></li><li><a href="/general/nexus.html" class="sidebar-link">nexus3搭建私有源</a></li><li><a href="/general/latex.html" class="sidebar-link">Katex/Latex 公式速查</a></li><li><a href="/general/vscode.html" class="sidebar-link">VS Code 常用操作</a></li><li><a href="/general/guide.html" class="sidebar-link">搭建指南</a></li><li><a href="/general/reg.html" class="sidebar-link">正则表达式</a></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="git-使用攻略"><a href="#git-使用攻略" class="header-anchor">#</a> git 使用攻略</h1> <h2 id="git-命令速查"><a href="#git-命令速查" class="header-anchor">#</a> git 命令速查</h2> <h3 id="常用命令"><a href="#常用命令" class="header-anchor">#</a> 常用命令</h3> <p>下面按流程列举了 git 常用命令：</p> <div class="language-git extra-class"><pre class="language-git"><code>git init //初始化git仓库
git add . // 添加所有文件
git commit -m <span class="token string">&quot;first commit&quot;</span>  // 提交文件
git remote add origin [远程仓库地址] //链接远程仓库，创建主分支
git pull origin master // 拉取远程仓库到本地主分支
git push -u origin master  // 把本地仓库的文件推送到远程仓库
// 如果当前分支与多个主机存在追踪关系，那么这个时候-u选项会指定一个默认主机(即origin)
// 这样后面就可以不加任何参数使用git push
</code></pre></div><h3 id="git-创建-ssh-key-进行远程提交"><a href="#git-创建-ssh-key-进行远程提交" class="header-anchor">#</a> git 创建 ssh key 进行远程提交</h3> <h4 id="创建-github-的-ssh"><a href="#创建-github-的-ssh" class="header-anchor">#</a> 创建 Github 的 SSH</h4> <ol><li>创建 SSH Key。Windows 下打开<strong>Git Bash</strong>，创建 SSH Key：<br> <code>ssh-keygen -t rsa -C &quot;youremail@example.com&quot;</code>,例如我的 git 邮箱是<strong>example@live.com</strong>，则输入<code>ssh-keygen -t rsa -C &quot;example@live.com&quot;</code>，一切顺利的话，可以在 C 盘的用户目录里找到<code>.ssh</code>目录，里面有<code>id_rsa</code>和<code>id_rsa.pub</code>两个文件，这两个就是 SSH Key 的秘钥对，<code>id_rsa</code>是私钥，不能泄露出去，<code>id_rsa.pub</code>是公钥，可以放心地告诉任何人。</li> <li>登陆 GitHub，打开“Account settings”，“SSH Keys”页面，然后点“Add SSH Key”，填上任意 Title，在 Key 文本框里粘贴 id_rsa.pub 文件的内容。</li></ol> <h4 id="处理码云和-github-同时配置的冲突"><a href="#处理码云和-github-同时配置的冲突" class="header-anchor">#</a> 处理码云和 github 同时配置的冲突</h4> <p>如果需要在 Gitee(码云)、Github 上同时配置 ssh key，并解决冲突：</p> <ol><li><p>使用<code>-f</code>参数生成不同的 rsa 文件：</p> <div class="language-git extra-class"><pre class="language-git"><code>ssh-keygen -t rsa -C <span class="token string">&quot;xxxxxxx@qq.com&quot;</span> -f <span class="token string">&quot;github_id_rsa&quot;</span>
ssh-keygen -t rsa -C <span class="token string">&quot;xxxxxxx@qq.com&quot;</span> -f <span class="token string">&quot;gitee_id_rsa&quot;</span>
</code></pre></div></li> <li><p>把各自的 public 文件内容(即带有 pub 后缀文件)分别复制到 gitee 和 github 上。</p></li> <li><p>在<code>.ssh</code>文件夹中创建 config 文件解决 ssh 冲突：</p> <div class="language-git extra-class"><pre class="language-git"><code><span class="token comment"># gitee</span>
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile C:/Users/wowbat/.ssh/gitee_id_rsa

<span class="token comment"># github</span>
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile C:/Users/wowbat/.ssh/id_rsa

</code></pre></div></li></ol> <h3 id="新建代码库"><a href="#新建代码库" class="header-anchor">#</a> 新建代码库</h3> <ul><li>🍞 在当前目录初始化 git 仓库: <code>git init</code></li> <li>新建项目，并将其初始化为 git 仓库: <code>git init [仓库名称]</code></li> <li>🍞 新建项目文件夹，并从网址下载一个项目及其整个代码历史: <code>git clone [项目网址]</code></li></ul> <h3 id="git-配置"><a href="#git-配置" class="header-anchor">#</a> git 配置</h3> <ul><li>显示当前 git 配置: <code>git config --list</code></li> <li>设置提交代码时的用户名:<code>git config [--global] user.name &quot;[用户名]&quot;</code></li> <li>设置提交代码时的电子邮件:<code>git config [--global] user.email &quot;[email地址]&quot;</code></li></ul> <h3 id="增加-修改-提交文件"><a href="#增加-修改-提交文件" class="header-anchor">#</a> 增加/修改/提交文件</h3> <ul><li>🍞 将文件夹下所有文件添加到仓库：<code>git add .</code></li> <li>🍞 将所有添加后的文件提交到仓库：<code>git commit -m &quot;[注释]&quot;</code></li> <li>添加所有追踪的文件到暂存区并提交: <code>git commit -a -m &quot;[注释]&quot;</code>，🔥tips:对于新增加的文件无效果</li> <li>如果代码没有任何新变化，则用新的信息来改写上一次 commit 的提交信息: <code>git commit --amend -m &quot;[信息]&quot;</code></li></ul> <h3 id="分支"><a href="#分支" class="header-anchor">#</a> 分支</h3> <ul><li>显示所有本地分支: <code>git branch</code></li> <li>列入所有本地和远程分支: <code>git branch -a</code></li> <li>新建一个分支，但依然停留在当前分支: <code>git branch [分支名称]</code></li> <li>🍞 新建一个分支，并切换到该分支: <code>git checkout -b [分支名称]</code></li> <li>切换到指定分支，并更新工作区: <code>git checkout [分支名称]</code></li> <li>合并指定分支到当前分支: <code>git merge [分支名称]</code></li></ul> <h3 id="标签"><a href="#标签" class="header-anchor">#</a> 标签</h3> <p>提交之后可以使用<code>git tag [标签名]</code><strong>创建标签</strong>，然后使用<code>git show [标签名]</code>可以显示那次提交信息，显示之后按<code>q</code>退出。</p> <p>可以对<strong>过去的提交打标签</strong>，使用<code>git log --pretty=oneline</code>查看所有提交历史，然后使用<code>git tag -a [标签名，例如v1.2] [hash版本，例如9fceb02]</code>给历史提交打标签</p> <p><code>git tag</code>能够<strong>查看所有标签名</strong></p> <p>要<strong>删除</strong>本地仓库上的标签，可以使用命令 <code>git tag -d [标签名]</code></p> <p>如果你想<strong>查看某个标签所指向的文件版本</strong>，可以使用 <code>git checkout [标签名]</code></p> <p>默认情况下，<code>git push</code> 命令并<strong>不会</strong>传送标签到远程仓库服务器上。在创建完标签后你必须显式地推送标签到共享服务器上，<code>git push origin [标签名]</code>，如果想要一次性推送很多标签，也可以使用带有<code>--tags</code>选项的 <code>git push</code> 命令，即<code>git push origin --tags</code></p> <h3 id="rebase"><a href="#rebase" class="header-anchor">#</a> rebase</h3> <p>第二种合并分支的方法是 <code>git rebase</code>。Rebase 实际上就是取出一系列的提交记录，“复制”它们，然后在另外一个地方逐个的放下去。</p> <p>Rebase 的优势就是可以<strong>创造更线性的提交历史</strong>，这听上去有些难以理解。如果只允许使用 Rebase 的话，代码库的提交历史将会变得异常清晰。</p> <p>我们想要把 bugFix 分支里的工作直接移到 main 分支上。移动以后会使得两个分支的功能看起来像是按顺序开发，但实际上它们是并行开发的。注意当前所在的分支是 bugFix（星号标识的是当前分支），使用 <code>git rebase main</code> 实现此目标。</p> <p><img src="https://pic.imgdb.cn/item/618fc2ff2ab3f51d916c7810.jpg" alt="git rebase main"></p> <p>现在 bugFix 分支上的工作在 main 的最顶端，同时我们也得到了一个更线性的提交序列。<strong>注意</strong>：提交记录<code>C3</code>依然存在（树上那个半透明的节点），而 <code>C3'</code> 是我们 Rebase 到 main 分支上的<code>C3</code>的副本。</p> <p>然后还需要切换到<code>main</code>分支上，使用<code>git checkout main</code>。然后使用<code>git rebase bugFix</code>把它rebase到<code>bugFix</code>分支上。</p> <h3 id="在提交树上移动"><a href="#在提交树上移动" class="header-anchor">#</a> 在提交树上移动</h3> <p>我们首先看一下 “HEAD”。 HEAD 是一个对当前检出记录的符号引用，也就是指向你正在其基础上进行工作的提交记录。</p> <p>HEAD 总是指向当前分支上最近一次提交记录。大多数修改提交树的 Git 命令都是从改变 HEAD 的指向开始的。HEAD 通常情况下是指向分支名的（如 bugFix）。在你提交时，改变了 bugFix 的状态，这一变化通过 HEAD 变得可见。</p> <p>使用<code>git checkout [提交记录的hash]</code>可以移动HEAD。不过通过指定提交记录哈希值的方式在 Git 中移动不太方便，因为hash值通常很长，所以 Git 引入了相对引用。</p> <p>使用相对引用的话，你就可以从一个易于记忆的地方（比如 bugFix 分支或 HEAD）开始计算。相对引用非常给力，这里我介绍两个简单的用法：</p> <ul><li>使用 <code>^</code> 向上移动 1 个提交记录</li> <li>使用 <code>~&lt;num&gt;</code> 向上移动多个提交记录，如<code>~3</code></li></ul> <p>操作符 (^)，把这个符号加在引用名称的后面，表示让 Git 寻找指定提交记录的父提交。所以<code>main^</code>相当于“main 的父节点”。<code>main^^</code>是 main 的第二个父节点使用<code>git checkout main^</code>运行。同理，也可以将 HEAD 作为相对引用的参照。</p> <p>如果你想在提交树中向上移动很多步的话，敲那么多<code>^</code>貌似也挺烦人的，Git 当然也考虑到了这一点，于是又引入了操作符<code>~</code>。该操作符后面可以跟一个数字（可选，不跟数字时与 ^ 相同，向上移动一次），指定向上移动多少次。<code>git checkout HEAD~4</code>表示HEAD向上移动4次。</p> <p><strong>强制修改分支位置</strong>，使用相对引用最多的就是移动分支。可以直接使用<code>-f</code>选项让分支指向另一个提交。例如<code>git branch -f main HEAD~3</code>命令会将 main 分支强制指向 HEAD 的第 3 级父提交。</p> <p><img src="https://pic.imgdb.cn/item/618fc8d22ab3f51d916e6198.jpg" alt="git branch -f main HEAD~3"></p> <h3 id="撤销变更"><a href="#撤销变更" class="header-anchor">#</a> 撤销变更</h3> <p>在 Git 里撤销变更的方法很多。和提交一样，撤销变更由底层部分（暂存区的独立文件或者片段）和上层部分（变更到底是通过哪种方式被撤销的）组成。我们这个应用主要关注的是后者。</p> <p>主要有两种方法用来撤销变更，一是<code>git reset</code>，还有就是<code>git revert</code>。接下来咱们逐个进行讲解。</p> <p><strong>Git Reset</strong>：通过把分支记录回退几个提交记录来实现撤销改动。你可以将这想象成“改写历史”。git reset 向上移动分支，原来指向的提交记录就跟从来没有提交过一样。</p> <p>例如<code>git reset HEAD~1</code>,Git 把 main 分支移回到 C1；现在我们的本地代码库根本就不知道有 C2 这个提交了。</p> <p><img src="https://pic.imgdb.cn/item/618fcc602ab3f51d916f836d.jpg" alt="git reset HEAD~1"></p> <p><strong>Git Revert</strong>：虽然在你的本地分支中使用 git reset 很方便，但是这种“改写历史”的方法对大家一起使用的远程分支是无效的哦！为了撤销更改并分享给别人，我们需要使用 git revert。</p> <p>使用<code>git revert HEAD</code>后，在我们要撤销的提交记录后面居然多了一个新提交！这是因为新提交记录<code>C2'</code> 引入了更改，这些更改刚好是用来撤销<code>C2</code>这个提交的。也就是说<code>C2'</code> 的状态与 <code>C1</code>是相同的。revert 之后就可以把你的更改推送到远程仓库与别人分享啦。</p> <p><img src="https://pic.imgdb.cn/item/618fcd3f2ab3f51d916fc8d8.jpg" alt="git revert HEAD"></p> <h3 id="查看信息"><a href="#查看信息" class="header-anchor">#</a> 查看信息</h3> <ul><li>查看变更内容: <code>git diff</code>，使用<strong>pagedown</strong>按钮翻页，使用<strong>q</strong>再按<strong>enter</strong>退出查看</li> <li>🍞 显示所有变更的文件: <code>git status</code></li> <li>单行模式查看提交日记: <code>git log --pretty --oneline</code></li> <li>显示过去的 5 次提交: <code>git log -5 --pretty --oneline</code></li> <li>显示今天写了多少代码: <code>git diff --shortstat &quot;@{0 day ago}&quot;</code></li> <li>显示当前分支最近的几次提交: <code>git reflog</code></li></ul> <h3 id="远程操作"><a href="#远程操作" class="header-anchor">#</a> 远程操作</h3> <ul><li>显示所有远程仓库: <code>git remote -v</code></li> <li>取回远程仓库的变化，并与本地分支合并: <code>git pull [远程仓库名称,一般用origin] [分支名称]</code></li> <li>增加一个新的远程仓库，并命名: <code>git remote add [远程仓库名称,一般用origin] [远程url]</code></li> <li>上传本地指定分支到远程仓库: <code>git push [远程仓库名] [本地分支名]</code></li> <li>强行推送当前分支到远程仓库，即使有冲突: <code>git push [远程仓库名] --force</code></li></ul> <h3 id="撤销"><a href="#撤销" class="header-anchor">#</a> 撤销</h3> <h2 id="pandoc-配合-git-实现文档版本化管理"><a href="#pandoc-配合-git-实现文档版本化管理" class="header-anchor">#</a> pandoc 配合 git 实现文档版本化管理</h2> <blockquote><p>git 可以进行版本管理，但是只能针对纯文本，对于 docx 等二进制文件无法准确查看每次修改位置，那么如果用 markdown 文本文件管理文件内容，使用某种转换工具将 markdown 文件转换，就可以实现文档版本化管理。<a href="https://pandoc.org/" target="_blank" rel="noopener noreferrer">pandoc<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a>是一种将各类文件互相转换的工具，例如 docx、html、markdown、epub、pdf 等，在一些 markdown 写作工具中，它常被用作导出工具的一种，项目源代码托管于<a href="https://github.com/jgm/pandoc" target="_blank" rel="noopener noreferrer">github<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a>，可以在<a href="https://github.com/jgm/pandoc/releases" target="_blank" rel="noopener noreferrer">此处<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a>下载最新版本，2.1 版本的 win_x64 的安装文件<a href="https://wws.lanzous.com/i0lOmgja7na" target="_blank" rel="noopener noreferrer">下载<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a>。</p></blockquote> <h3 id="pandoc-基本命令"><a href="#pandoc-基本命令" class="header-anchor">#</a> pandoc 基本命令</h3> <p>pandoc 是一个命令行工具，下面是常用的命令，需要注意的是，如果使用 cmd，那么在使用 pandoc 之前键入<code>chcp 65001</code>，将编码设置为 UTF-8，否则导出的文件会出现错误。</p> <p>pandoc 的基本操作<code>pandoc &lt;files&gt; &lt;options&gt;</code>，其中 <code>&lt;files&gt;</code> 为输入的内容，其输入即可以来自文件，也可以来自标准输入甚至网页链接。而 <code>&lt;options&gt;</code> 为参数选项。主要的参数选项有：</p> <ul><li>-o [file]：指定输出文件，该项缺省时，将输出到标准输出；</li> <li>--highlight-style [style]：设置代码高亮主题，默认为 pygments；</li> <li>-s：生成有头尾的独立文件（HTML，LaTeX，TEI 或 RTF）；</li> <li>-S：聪明模式，根据文件判断其格式；</li> <li>--self-contained：生成自包含的文件，仅在输出 HTML 文档时有效；</li> <li>--verbose：开启 Verbose 模式，用于 Debug；</li> <li>--list-input-formats：列出支持的输入格式；</li> <li>--list-output-formats：列出支持的输出格式；</li> <li>--list-extensions：列出支持的 Markdown 扩展方案；</li> <li>--list-highlight-languages：列出支持代码高亮的编程语言；</li> <li>--list-highlight-styles：列出支持的代码高亮主题；</li> <li>-v、--version：显示程序的版本号；</li> <li>-h、--help：显示程序的帮助信息。</li></ul> <p>常用的转换命令如下：</p> <div class="language-python extra-class"><pre class="language-python"><code><span class="token comment"># 将demo.md转换为demo.html</span>
pandoc demo<span class="token punctuation">.</span>md <span class="token operator">-</span>o demo<span class="token punctuation">.</span>html

<span class="token comment"># 使用自定义css样式，并将外部文件嵌入到 HTML 文档中，生成一个自包含的独立HTML文件</span>
pandoc demo<span class="token punctuation">.</span>md <span class="token operator">-</span><span class="token operator">-</span>self<span class="token operator">-</span>contained <span class="token operator">-</span>c style<span class="token punctuation">.</span>css <span class="token operator">-</span>o demo<span class="token punctuation">.</span>html

<span class="token comment"># 将demo.md文件转换为 docx 格式</span>
pandoc demo<span class="token punctuation">.</span>md <span class="token operator">-</span>o demo<span class="token punctuation">.</span>docx

<span class="token comment"># 下面的命令将 HTML 网页转换为 docx 格式</span>
pandoc http<span class="token punctuation">:</span><span class="token operator">//</span>weiwei3381<span class="token punctuation">.</span>gitee<span class="token punctuation">.</span>io<span class="token operator">/</span>blogs<span class="token operator">/</span>general<span class="token operator">/</span>git<span class="token punctuation">.</span>html <span class="token operator">-</span>o this_page<span class="token punctuation">.</span>docx
</code></pre></div><h3 id="将-md-文件转换为公文格式-word"><a href="#将-md-文件转换为公文格式-word" class="header-anchor">#</a> 将 md 文件转换为公文格式 word</h3> <p>（一）进入 cmd 页面，输入<code>chcp 65001</code>，将编码设置为 UTF-8，使用下面命令查看默认的 word 模板，并将其导出到当前文件夹的 custom-reference.docx 中：</p> <div class="language-python extra-class"><pre class="language-python"><code>pandoc <span class="token operator">-</span><span class="token operator">-</span><span class="token keyword">print</span><span class="token operator">-</span>default<span class="token operator">-</span>data<span class="token operator">-</span><span class="token builtin">file</span> reference<span class="token punctuation">.</span>docx <span class="token operator">&gt;</span> custom<span class="token operator">-</span>reference<span class="token punctuation">.</span>docx
</code></pre></div><p>（二）修改<code>custom-reference.docx</code>格式，将其改为公文模板，这里已经修改好的公文模板<code>reference.docx</code><a href="/reference.docx">格式文件</a>下载。</p> <div class="custom-block tip"><p class="custom-block-title">注意</p> <p>有些格式不是默认显示的，所以需要在 word 的样式栏中，点击右下角的箭头，展开全部样式才能找到，例如<code>图片</code>、<code>图注</code>、<code>源代码</code>等。</p></div> <p>（三）将公文模板放到 pandoc 的用户数据目录，使用<code>pandoc -v</code>查看目录的位置。</p> <div class="language-python extra-class"><pre class="language-python"><code><span class="token comment"># 查看pandoc的版本信息</span>
pandoc <span class="token operator">-</span>v
<span class="token comment"># 输出中能看到默认的用户数据目录，word模板命名为reference.docx放到用户数据目录中</span>
<span class="token comment"># Default user data directory: C:\Users\weiwe\AppData\Roaming\pandoc</span>
</code></pre></div><p>我自己电脑的位置是<code>C:\Users\weiwe\AppData\Roaming\pandoc</code>，如果<code>pandoc</code>目录不存在，可以手动创建，然后将模板格式改为<code>reference.docx</code>名称放到该位置，然后使用<code>pandoc [目标文件.md] -o [转换后文件.docx]</code></p></div> <footer class="page-edit"><!----> <div class="last-updated"><span class="prefix">更新于:</span> <span class="time">11/14/2021, 8:20:52 AM</span></div></footer> <div class="page-nav"><p class="inner"><span class="prev">
      ←
      <a href="/general/fast.html" class="prev">
        快速笔记
      </a></span> <span class="next"><a href="/general/markdown.html">
        Markdown基本语法
      </a>
      →
    </span></p></div> </main></div><div class="global-ui"><!----></div></div>
    <script src="/assets/js/app.9e067b79.js" defer></script><script src="/assets/js/2.983eb755.js" defer></script><script src="/assets/js/34.381de37e.js" defer></script>
  </body>
</html>
